// 定义vuex仓库
import Vue from 'vue'
import Vuex from 'vuex'
// 使用插件
Vue.use(Vuex)

// 创建仓库实例
const store = new Vuex.Store({
  // 存储公共的数据
  state: {
    num: 10,
    items: [] // 数据的值 需求请求一个接口才能拿到
  },
  // 定义mutations 修改 state
  mutations: {
    ADD_NUM (state, n) {
      state.num += n
    },
    REDUCE_NUM (state, n) {
      state.num -= n
    },
    INIT_ITEMS (state, items) {
      state.items = items
    }
  },
  // 定义aciton发送异步请求
  actions: {
    /* FETCH_ITEMS (context) {
      // context就是 仓库这个实例对象
      //     属性
      //       state
      //       commit

      // setTimeout
      setTimeout(() => {
        const items = ['商品1', '商品2', '商品3']
        context.commit('INIT_ITEMS', items)
      }, 2000)
    } */
    FETCH_ITEMS ({ commit }) {
      setTimeout(() => {
        const items = ['商品1', '商品2', '商品3']
        commit('INIT_ITEMS', items)
      }, 2000)
    }
  }
})

export default store
